package com.zjw.shortlink.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zjw.shortlink.project.dao.entity.ShortLinkDO;
import com.zjw.shortlink.project.dto.biz.ShortLinkStatsRecordDTO;
import com.zjw.shortlink.project.dto.req.ShortLinkBatchCreateReqDTO;
import com.zjw.shortlink.project.dto.req.ShortLinkCreateReqDTO;
import com.zjw.shortlink.project.dto.req.ShortLinkPageReqDTO;
import com.zjw.shortlink.project.dto.req.ShortLinkUpdateReqDTO;
import com.zjw.shortlink.project.dto.resp.ShortLinkBatchCreateRespDTO;
import com.zjw.shortlink.project.dto.resp.ShortLinkCreateRespDTO;
import com.zjw.shortlink.project.dto.resp.ShortLinkGroupCountQueryRespDTO;
import com.zjw.shortlink.project.dto.resp.ShortLinkPageRespDTO;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.util.List;

public interface ShortLinkService extends IService<ShortLinkDO> {
    ShortLinkCreateRespDTO createShortLink(ShortLinkCreateReqDTO requestParams);
    IPage<ShortLinkPageRespDTO> pageShortLink(ShortLinkPageReqDTO requestParams);
    List<ShortLinkGroupCountQueryRespDTO> listGroupShortLinkCount(List<String> requestParams);
    void updateShortLink(ShortLinkUpdateReqDTO requestParams);
    void restoreUrl(String shortUrl, HttpServletRequest request, HttpServletResponse response);
    ShortLinkBatchCreateRespDTO batchCreateShortLink(ShortLinkBatchCreateReqDTO requestParams);
    void shortLinkStats(String fullShortUrl, ShortLinkStatsRecordDTO recordDTO);
}
